home *** CD-ROM | disk | FTP | other *** search
/ Whiteline: Alpha / Whiteline Alpha.iso / progtool / gfabasic / wt_gfa / wt_info / fragen.txt next >
Encoding:
Text File  |  1994-09-22  |  3.1 KB  |  99 lines

  1.         Weller-TOOLS für GFA-BASIC: Fragen und Antworten
  2.         ------------------------------------------------
  3.  
  4.  
  5. Thema: Lokale Variablen, globale Variablen
  6.  
  7.  
  8. Frage:
  9. ------
  10.  
  11. Die  Weller-TOOLS für GFA-BASIC finden nicht alle  Variablen.  Es 
  12. wird  dann  eine  Meldung wie '...  kommt nur  einmal  vor'  aus-
  13. gegeben. Was ist nun richtig?
  14.  
  15.  
  16. Antwort:
  17. --------
  18.  
  19. Die  Weller-TOOLS  für  GFA-BASIC unterscheiden  bei  der  Cross-
  20. Referenz  sinnvollerweise zwischen lokalen und  globalen  Variab-
  21. len.  Wenn ein und derselbe Variablenname als lokale Variable und 
  22. als  globale  Variable  verwendet  wird,  hat  man  es  mit  zwei 
  23. verschiedenen  Variablen  zu tun,  die sich  nicht  'kennen'.  Im 
  24. Beispiel wird richtigerweise der Fehler erkannt:
  25.  
  26. text$............... meldung     13
  27.   *** Kommt in nur einer Procedure vor! Evt. lokal definieren.
  28.   *** Fehler: text$ kommt nur einmal vor! Tippfehler?
  29.  
  30.  
  31.  1 ' Programm, das denselben Namem für eine globale Variable
  32.  2 ' und eine lokale Variable verwendet.
  33.  3 '
  34.  4 init             ! Ausgegeben wird "Hallo".
  35.  5 meldung          ! Ausgegeben wird eine Leerzeile.
  36.  6 '
  37.  7 PROCEDURE init
  38.  8   LOCAL text$
  39.  9   text$="Hallo"
  40. 10   PRINT text$
  41. 11 RETURN
  42. 12 PROCEDURE meldung
  43. 13   PRINT text$        ! text$ ist global und kennt die lokale
  44. 14 RETURN               ! Variable text$ aus hallo nicht.
  45.  
  46.  
  47. Sinngemäß gilt dies auch für Übergabeparameter.
  48.  
  49. Siehe: GFA-BASIC 3.0 Handbuch Seite 7-26
  50.  
  51.  
  52.  
  53. Frage:
  54. ------
  55.  
  56. Die  Weller-TOOLS für GFA-BASIC sehen auch solche  Variablen  als 
  57. global  an,  die  von einer übergeordneten  Procedure  als  lokal 
  58. definiert wurden. Die Cross-Reference ist dann fehlerhaft. Stimmt 
  59. das?
  60.  
  61. Antwort:
  62. --------
  63.  
  64. Siehe Handbuch Kap. 3.4.5 Unzulänglichkeiten:
  65.  
  66. In  GFA-BASIC  gelten lokale Variablen nicht  nur  in  derjenigen 
  67. Procedure als lokal,  in der sie definiert werden,  sondern  auch 
  68. in  allen von dieser Procedure aufgerufenen  Proceduren.  Es  mag  
  69. zwar kein guter Programmierstil sein,  solche Variablen nicht als 
  70. Übergabe-Variablen  weiterzugeben,   es  ist  aber  in  GFA-BASIC 
  71. erlaubt.  Bei  den  Weller-TOOLS  für GFA-BASIC  wird  aber  eine 
  72. lokale Variable nur innerhalb derjenigen Procedure als lokal  an-
  73. gesehen, in der sie definiert wird.
  74.  
  75. VAR-Variablen  werden  wie  lokale  Variablen   gehandhabt,   sie 
  76. verändern  aber den Wert globaler Variablen.  Die  X-REF-Funktion 
  77. ist   nicht   so  intelligent,   Pointer-Operationen   (Call   by 
  78. Reference,  was  die VAR-Funktion darstellt)  zu  verfolgen.  Das 
  79. gleiche gilt für den *-Pointer-Operator.
  80.  
  81.  1 ' Programm, das eine lokale Variable auch in aufgerufenen
  82.      Proceduren verwendet.
  83.  2 '
  84.  3 init                  ! Ausgegeben wird "Hallo".
  85.  4 meldung               ! Ausgegeben wird eine Leerzeile.
  86.  5 '
  87.  6 PROCEDURE init
  88.  7   LOCAL text$
  89.  8   text$="Hallo"
  90.  9   PRINT text$
  91. 10   meldung            ! Ausgegeben wird "Hallo".
  92. 11 RETURN
  93. 12 PROCEDURE meldung
  94. 13   PRINT text$        ! text$ ist beim ersten mal die 
  95.                           lokale Variable von init,
  96. 14 RETURN               ! beim zweiten Mal eine (leere) 
  97.                           globale Variable.
  98.  
  99.